﻿using System;
using System.Data;
using System.Text;
using System.Configuration;
using System.Collections;
using System.Collections.Generic;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Microsoft.Practices.ObjectBuilder;
using GC2.Entities.Seguridad;
using GC2.Entities.Admin;
using GC2.Bussines.BMAdmin;

public partial class Admin_CuponRecibo : GenericPage
{
    #region Propiedades
    Usuarios usuario = new Usuarios();
    private string scriptSession
    {
        get
        {
            return (string)Session["scriptSession"];
        }
        set
        {
            Session["scriptSession"] = value;
        }
    }
    GC2.Funciones.General.FunctionsSite f = new GC2.Funciones.General.FunctionsSite();


    #endregion

    #region Controles

    #region Page_Load
    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            SetearCultura();
            SetearConexion();
            if (!this.IsPostBack)
            {
                usuario = (Usuarios)Session["UsuarioActual"];
                Limpiar();
                Clientes cliente = new Clientes();
                List<Clientes> listaClientes = new List<Clientes>();
                BMClientes bmClientes = new BMClientes(Connection);
                listaClientes = bmClientes.BMClientesSearch(cliente);
                Session["listaClientes"] = listaClientes;
            }
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region txtIdCliente_TextChanged
    protected void txtIdCliente_TextChanged(object sender, EventArgs e)
    {
        try
        {
            txtSaldo.Text = "";
            BuscarCliente();
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region btnBuscarCliente_Click
    protected void btnBuscarCliente_Click(object sender, EventArgs e)
    {
        try
        {
            txtIdCliente.Text = "";
            txtCliente.Text = "";
            txtSaldo.Text = "";
            BuscarCliente();
        }
        catch (Exception ex) { throw ex; }
    }
    #endregion

    #region btnCalcular_Click
    protected void btnCalcular_Click(object sender, EventArgs e)
    {
        try
        {
            if (txtIdCliente.Text == "")
            {
                lblMensaje.Text = "Cliente Incorrecto.";
                mpeMensaje.Show();
                return;
            }

            DateTime FechaTemp = Fecha1.GetFecha();
            if (FechaTemp == Fecha1.FechaNula)
            {
                lblMensaje.Text = "Fecha Incorrecta.";
                mpeMensaje.Show();
                return;
            }

            if (f.isNumeric(txtMonto1.Text))
            {
                Decimal dMonto = Convert.ToDecimal(txtMonto1.Text.Trim());

                Calcular();
            }
            else
            {
                lblMensaje.Text = "Monto Incorrrecto.";
                mpeMensaje.Show();
            }
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region btnGuardar_Click
    protected void btnGuardar_Click(object sender, EventArgs e)
    {
        try
        {
            if (txtIdCliente.Text == "")
            {
                lblMensaje.Text = "Cliente Incorrecto.";
                mpeMensaje.Show();
                return;
            }

            DateTime FechaTemp = Fecha1.GetFecha();
            if (FechaTemp == Fecha1.FechaNula)
            {
                lblMensaje.Text = "Fecha Incorrecta.";
                mpeMensaje.Show();
                return;
            }

            if (f.isNumeric(txtMonto1.Text))
            {
                Decimal dMonto = Convert.ToDecimal(txtMonto1.Text.Trim());
                Calcular();
                Guardar();
            }
            else
            {
                lblMensaje.Text = "Monto Incorrrecto.";
                mpeMensaje.Show();
            }
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region btnOtro_Click
    protected void btnOtro_Click(object sender, EventArgs e)
    {
        try
        {
            Limpiar();
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region btnCancelar_Click
    protected void btnCancelar_Click(object sender, EventArgs e)
    {
        try
        {
            Session["Venta"] = null;
            Response.Redirect("~/Seguridad/Default.aspx", false);
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region btnImprimir_Click
    protected void btnImprimir_Click(object sender, EventArgs e)
    {
        try
        {
            Session["iReporte"] = "1";
            registrarScript();
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #endregion

    #region Métodos


    #region BuscarCliente
    public void BuscarCliente()
    {
        try
        {
            List<Clientes> listaClientes = new List<Clientes>();
            listaClientes = (List<Clientes>)Session["listaClientes"];
            Clientes proveedor = new Clientes();
            if (txtIdCliente.Text.Trim() != "")
            {
                proveedor.Id_Cliente = Convert.ToInt16(txtIdCliente.Text.Trim());
            }
            proveedor.Nombre = txtCliente.Text.Trim();

            bool encontrado = false;
            foreach (Clientes item in listaClientes)
            {
                if (item.Id_Cliente == proveedor.Id_Cliente)
                {
                    txtIdCliente.Text = item.Id_Cliente.ToString();
                    txtCliente.Text = item.Nombre;
                    txtSaldo.Text = item.Saldo.ToString();
                    encontrado = true;
                    break;
                }
                if (item.Nombre == proveedor.Nombre)
                {
                    txtIdCliente.Text = item.Id_Cliente.ToString();
                    txtCliente.Text = item.Nombre;
                    txtSaldo.Text = item.Saldo.ToString();
                    encontrado = true;
                    break;
                }
            }

            if (!encontrado)
            {
                txtIdCliente.Text = "";
                txtCliente.Text = "";
                #region dispararPopUp(hacePostBack)

                string scriptSession = @"
            <script language=""javascript"" type=""text/javascript"">
            <!--
                function mostrarCliente()
                {
                    var stringURL = '../Admin/BuscarCliente.aspx?pStation=0';
                    var oINPUTS = document.getElementsByTagName (""INPUT"");
                    for(var a=0;a<oINPUTS.length; a++)
                    {
                        //Validaciones para cuando el control fue arrastrado a un PopUP (Sin MasterPage)

                        if(oINPUTS[a].getAttribute(""id"") == 'ct100_DefaultContent_txtIdConcepto')
                        {
                            alert('U1a: &IdConcepto = ' + oINPUTS[a].getAttribute(""value""));
                            stringURL = stringURL + '&Id_Concepto=' + oINPUTS[a].getAttribute(""value"");
                        }
                        if(oINPUTS[a].getAttribute(""id"") == 'ct100_DefaultContent_txtConcepto')
                        {  
                            //alert('U2a: &Concepto = ' + oINPUTS[a].getAttribute(""value""));
                            stringURL = stringURL + '&Concepto=' + oINPUTS[a].getAttribute(""value"");
                        }
                        if(oINPUTS[a].getAttribute(""id"") == 'ct100_DefaultContent_txtSaldo')
                        {  
                            alert('U3a: &Saldo = ' + oINPUTS[a].getAttribute(""value""));
                            stringURL = stringURL + '&Saldo=' + oINPUTS[a].getAttribute(""value"");
                        }
                    }
                    // alert(stringURL);
                    var newWin = window.open(stringURL, ""popup"", ""menubar=no, resizable=no, scrollbars=yes, height=450, width=550, left=100, top=100"");
                }
                mostrarCliente();
            //-->
            </script>
            ";

                Page.ClientScript.RegisterStartupScript(this.GetType(), "ScriptA", scriptSession);
                #endregion
            }

        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region Calcular
    protected void Calcular()
    {
        try
        {
            Tr2F.Visible = true;
            Tr2M.Visible = true;
            Tr3F.Visible = true;
            Tr3M.Visible = true;
            decimal d1 = Convert.ToDecimal(txtMonto1.Text);
            float f1 = Convert.ToInt64(d1);
            float f2 = Convert.ToInt64(f1 * 1.05);
            float f3 = Convert.ToInt64(f1 * 1.1);
            decimal d2 = Convert.ToDecimal(f2);
            decimal d3 = Convert.ToDecimal(f3);
            txtMonto1.Text = d1.ToString("###,###,###,##0.00");
            txtMonto2.Text = d2.ToString("###,###,###,##0.00");
            txtMonto3.Text = d3.ToString("###,###,###,##0.00");
            btnGuardar.Visible = true;
            
            DateTime dtFecha2 = Fecha1.GetFecha().AddDays(14);
            Fecha2.SetFecha(dtFecha2);
            DateTime dtFecha3 = Fecha1.GetFecha().AddDays(29);
            Fecha3.SetFecha(dtFecha3);
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region Guardar
    protected void Guardar()
    {
        try
        {
            List<CuponRecibo> listaCupones = new List<CuponRecibo>();

            CuponRecibo cupon1 = new CuponRecibo();
            BMCuponRecibo bmCupon1 = new BMCuponRecibo(Connection);

            cupon1 = bmCupon1.BMCuponReciboProximoId();
            cupon1.Contrato = txtContrato.Text;
            cupon1.CuotaVigente = Convert.ToInt16(txtCuota.Text);
            cupon1.Cuotas = Convert.ToInt16(txtCuotas.Text);
            cupon1.Dias = 15;
            cupon1.Estado = "Activo";
            string st1Fecha1 = Fecha1.GetFecha().Year.ToString();
            if (Fecha1.GetFecha().Month < 10)
            {
                st1Fecha1 += "0";
            }
            st1Fecha1 += Fecha1.GetFecha().Month.ToString();
            if (Fecha1.GetFecha().Day < 10)
            {
                st1Fecha1 += "0";
            }
            st1Fecha1 += Fecha1.GetFecha().Day.ToString();
            cupon1.Fecha1 = Convert.ToInt32(st1Fecha1);
            string st1Fecha2 = Fecha2.GetFecha().Year.ToString();
            if (Fecha2.GetFecha().Month < 10)
            {
                st1Fecha2 += "0";
            }
            st1Fecha2 += Fecha2.GetFecha().Month.ToString();
            if (Fecha2.GetFecha().Day < 10)
            {
                st1Fecha2 += "0";
            }
            st1Fecha2 += Fecha2.GetFecha().Day.ToString();
            cupon1.Fecha2 = Convert.ToInt32(st1Fecha2);
            string st1Fecha3 = Fecha3.GetFecha().Year.ToString();
            if (Fecha3.GetFecha().Month < 10)
            {
                st1Fecha3 += "0";
            }
            st1Fecha3 += Fecha3.GetFecha().Month.ToString();
            if (Fecha3.GetFecha().Day < 10)
            {
                st1Fecha3 += "0";
            }
            st1Fecha3 += Fecha3.GetFecha().Day.ToString();
            cupon1.Fecha3 = Convert.ToInt32(st1Fecha3);
            DateTime dt1Now = DateTime.Now;
            string st1FechaEstado = dt1Now.Year.ToString();
            if (dt1Now.Month < 10)
            {
                st1FechaEstado += "0";
            }
            st1FechaEstado += dt1Now.Month.ToString();
            if (dt1Now.Day < 10)
            {
                st1FechaEstado += "0";
            }

            //cupon1.pFecha1 = cupon1.Fecha1.ToString().Substring(6, 2) + "/" + cupon1.Fecha1.ToString().Substring(4, 2) + "/" + cupon1.Fecha1.ToString().Substring(0, 4);
            //cupon1.pFecha2 = cupon1.Fecha2.ToString().Substring(6, 2) + "/" + cupon1.Fecha2.ToString().Substring(4, 2) + "/" + cupon1.Fecha2.ToString().Substring(0, 4);
            //cupon1.pFecha3 = cupon1.Fecha3.ToString().Substring(6, 2) + "/" + cupon1.Fecha3.ToString().Substring(4, 2) + "/" + cupon1.Fecha3.ToString().Substring(0, 4);

            cupon1.pFecha1 = "01/" + cupon1.Fecha1.ToString().Substring(4, 2) + "/" + cupon1.Fecha1.ToString().Substring(0, 4);
            cupon1.pFecha2 = "15/" + cupon1.Fecha1.ToString().Substring(4, 2) + "/" + cupon1.Fecha1.ToString().Substring(0, 4);
            if (cupon1.Fecha1.ToString().Substring(4, 2) == "02")
            {
                cupon1.pFecha3 = "01/03/" + cupon1.Fecha1.ToString().Substring(0, 4);
            }
            else
            {
                cupon1.pFecha3 = "30/" + cupon1.Fecha1.ToString().Substring(4, 2) + "/" + cupon1.Fecha3.ToString().Substring(0, 4);
            }

            st1FechaEstado += dt1Now.Day.ToString();
            cupon1.FechaEstado = Convert.ToInt32(st1FechaEstado);
            cupon1.Grupo = txtGrupo.Text;
            cupon1.Id_Cliente = Convert.ToInt64(txtIdCliente.Text);
            usuario = (Usuarios)Session["UsuarioActual"];
            cupon1.Id_Usuario = usuario.Id_Usuario;
            cupon1.IdEstado = 1;
            cupon1.Monto1 = Convert.ToDecimal(txtMonto1.Text);
            cupon1.Monto2 = Convert.ToDecimal(txtMonto2.Text);
            cupon1.Monto3 = Convert.ToDecimal(txtMonto3.Text);
            cupon1.Nombre = txtCliente.Text;
            cupon1.Obs = txtObs.Text;
            cupon1.TasaMensual = 10;
            cupon1.TotalPlan = Convert.ToDecimal(txtTotal.Text);
            

            BMRecibos bmRecibos1 = new BMRecibos(Connection);
            Recibos recibo1 = bmRecibos1.BMRecibosProximoId();
            cupon1.Recibo = recibo1.Recibo;    
            
            cupon1 = bmCupon1.BMCuponReciboInsert(cupon1);

            recibo1.IdCuponRecibo = cupon1.IdCuponRecibo;
            recibo1.Cuota = cupon1.CuotaVigente;
            recibo1 = bmRecibos1.BMRecibosInsert(recibo1);

            Session["Cuotas"] = cupon1.Cuotas.ToString();

            listaCupones.Add(cupon1);

            int iMes = Fecha1.GetFecha().Month;
            int iAnio = Fecha1.GetFecha().Year;
            iMes++;
            if (iMes == 13)
            {
                iMes = 1;
                iAnio++;
            }
            string stFechaMas="01/"+iMes+"/"+iAnio;
            DateTime dFecha1 = Convert.ToDateTime(stFechaMas);
           


            for (int i = cupon1.CuotaVigente + 1; i < cupon1.Cuotas + 1; i++)
            {
                CuponRecibo cupon = new CuponRecibo();
                cupon.IdCuponRecibo = cupon1.IdCuponRecibo;
                cupon.Cuotas = cupon1.Cuotas;
                cupon.Contrato = txtContrato.Text;
                cupon.CuotaVigente = i;
                cupon.Dias = 15;
                cupon.Estado = "Activo";
                string stFecha1 = dFecha1.Year.ToString();
                if (dFecha1.Month < 10)
                {
                    stFecha1 += "0";
                }
                stFecha1 += dFecha1.Month.ToString();
                //if (dFecha1.Day < 10)
                //{
                //    stFecha1 += "0";
                //}
                //stFecha1 += dFecha1.Day.ToString();
                stFecha1 += "01";
                cupon.Fecha1 = Convert.ToInt32(stFecha1);
                //string stFecha2 = dFecha2.Year.ToString();
                string stFecha2 = dFecha1.Year.ToString();
                if (dFecha1.Month < 10)
                {
                    stFecha2 += "0";
                }
                //stFecha2 += dFecha2.Month.ToString();
                stFecha2 += dFecha1.Month.ToString();
                //if (dFecha2.Day < 10)
                //{
                //    stFecha2 += "0";
                //}
                //stFecha2 += dFecha2.Day.ToString();
                stFecha2 += "15";
                cupon.Fecha2 = Convert.ToInt32(stFecha2);
                //string stFecha3 = dFecha3.Year.ToString();
                string stFecha3 = dFecha1.Year.ToString();
                if (dFecha1.Month < 10)
                {
                    stFecha3 += "0";
                    if (dFecha1.Month == 2)
                    {
                        stFecha3 += "0301";
                    }
                    else
                    {
                        stFecha3 += dFecha1.Month.ToString();
                        stFecha3 += "30";
                    }

                }
                else
                {
                    stFecha3 += dFecha1.Month.ToString();
                    stFecha3 += "30";
                }
                
                //if (dFecha3.Day < 10)
                //{
                //    stFecha3 += "0";
                //}
                //stFecha3 += dFecha3.Day.ToString();
                
                cupon.Fecha3 = Convert.ToInt32(stFecha3);
                DateTime dtNow = DateTime.Now;
                string stFechaEstado = dtNow.Year.ToString();
                if (dtNow.Month < 10)
                {
                    stFechaEstado += "0";
                }
                stFechaEstado += dtNow.Month.ToString();
                if (dtNow.Day < 10)
                {
                    stFechaEstado += "0";
                }

                //cupon.pFecha1 = cupon.Fecha1.ToString().Substring(6, 2) + "/" + cupon.Fecha1.ToString().Substring(4, 2) + "/" + cupon.Fecha1.ToString().Substring(0, 4);
                //cupon.pFecha2 = cupon.Fecha2.ToString().Substring(6, 2) + "/" + cupon.Fecha2.ToString().Substring(4, 2) + "/" + cupon.Fecha2.ToString().Substring(0, 4);
                //cupon.pFecha3 = cupon.Fecha3.ToString().Substring(6, 2) + "/" + cupon.Fecha3.ToString().Substring(4, 2) + "/" + cupon.Fecha3.ToString().Substring(0, 4);

                cupon.pFecha1 = "01/" + cupon.Fecha1.ToString().Substring(4, 2) + "/" + cupon.Fecha1.ToString().Substring(0, 4);
                cupon.pFecha2 = "15/" + cupon.Fecha1.ToString().Substring(4, 2) + "/" + cupon.Fecha1.ToString().Substring(0, 4);
                if (cupon.Fecha1.ToString().Substring(4, 2) == "02")
                {
                    cupon.pFecha3 = "01/03/" + cupon.Fecha1.ToString().Substring(0, 4);
                }
                else
                {
                    cupon.pFecha3 = "30/" + cupon.Fecha1.ToString().Substring(4, 2) + "/" + cupon.Fecha1.ToString().Substring(0, 4);
                }

                stFechaEstado += dtNow.Day.ToString();
                cupon.FechaEstado = Convert.ToInt32(stFechaEstado);
                cupon.Grupo = txtGrupo.Text;
                cupon.Id_Cliente = Convert.ToInt64(txtIdCliente.Text);
                usuario = (Usuarios)Session["UsuarioActual"];
                cupon.Id_Usuario = usuario.Id_Usuario;
                cupon.IdEstado = 1;
                cupon.Monto1 = cupon1.Monto1;
                cupon.Monto2 = cupon1.Monto2;
                cupon.Monto3 = cupon1.Monto3;
                cupon.Nombre = cupon1.Nombre;
                cupon.Obs = cupon1.Obs;
                cupon.TasaMensual = cupon1.TasaMensual;
                cupon.TotalPlan = cupon1.TotalPlan;

                BMRecibos bmRecibos = new BMRecibos(Connection);
                Recibos recibo = bmRecibos.BMRecibosProximoId();
                cupon.Recibo = recibo.Recibo;

                BMCuponRecibo bmCupon = new BMCuponRecibo(Connection);
                cupon = bmCupon.BMCuponReciboInsert(cupon);

                recibo.IdCuponRecibo = cupon.IdCuponRecibo;
                recibo.Cuota = cupon.CuotaVigente;
                recibo = bmRecibos.BMRecibosInsert(recibo);

                listaCupones.Add(cupon);

                iMes = dFecha1.Month;
                iAnio = dFecha1.Year;
                iMes++;
                if (iMes == 13)
                {
                    iMes = 1;
                    iAnio++;
                }
                stFechaMas="01/"+iMes+"/"+iAnio;
                dFecha1 = Convert.ToDateTime(stFechaMas);
                
            }

            Session["listaCupones"] = listaCupones;
            txtIdCuponRecibo.Text = cupon1.IdCuponRecibo.ToString();

            Session["CuotasCupon"] = cupon1.Cuotas.ToString();

            btnGuardar.Visible = false;
            btnCalcular.Visible = false;
            btnImprimir.Visible = true;
            btnOtro.Visible = true;
            lblAccion.Text = "Cupon Recibo Guardado - puede Imprimir.";
                                  

        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region Limpiar
    protected void Limpiar()
    {
        try
        {
            lblAccion.Text = "Seleccionar Cliente - Calcular";
            btnOtro.Visible = false;
            btnImprimir.Visible = false;
            btnGuardar.Visible = false;
            btnCalcular.Visible = true;
            Tr2F.Visible = false;
            Tr2M.Visible = false;
            Tr3F.Visible = false;
            Tr3M.Visible = false;
            Fecha1.SetFecha(null);
            txtMonto1.Text = "";
            txtCuota.Text = "";
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region registrarScript
    protected void registrarScript()
    {
        // dispararPopUp(hacePostBack)
        StringBuilder scriptSession = new StringBuilder("<script language='javascript' type='text/javascript'>");
        scriptSession.Append("function mostrarReporte()");
        scriptSession.Append("{");
        scriptSession.Append("var stringURL = '../Informes/RptCuponReciboVew.aspx';");
        scriptSession.Append("var opciones='toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=yes';");
        scriptSession.Append("var newWin = window.open(stringURL, 'PopUp" + DateTime.Now.Ticks.ToString() + "', opciones);");
        scriptSession.Append("}");
        scriptSession.Append("mostrarReporte();");
        scriptSession.Append("</script>");

        Page.ClientScript.RegisterStartupScript(this.GetType(), "Reporte" + Session["iReporte"].ToString(), scriptSession.ToString());
    }
    #endregion
 
    #endregion

   
}

